#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
#include <stdbool.h>

void Swap(int* p, int* q)
{
	int tmp = *p;
	*p = *q;
	*q = tmp;
}

void PrintArray(int* a, int n)
{
	for (int i = 0; i < n; i++)
	{
		printf("%d ", a[i]);
	}
	printf("\n");
}

//void SelectSort(int* a, int n)
//{
//	int left = 0;
//	int right = n - 1;
//
//	while (left < right)
//	{
//		int maxi = left;
//		int mini = left;
//		for (int i = left; i < right + 1; i++)
//		{
//			if (a[i] > a[maxi])
//			{
//				Swap(&i, &maxi);
//			}
//			if (a[i] < a[mini])
//			{
//				Swap(&i, &mini);
//			}
//		}
//		Swap(&a[left], &a[mini]);
//		if (left == maxi)
//		{
//			Swap(&maxi, &mini);
//		}
//		Swap(&a[right], &a[maxi]);
//
//		left++;
//		right--;
//	}
//}

void BubbleSort(int* a, int n)
{
	for (int j = n-1; j > 0; j--)
	{
		int exchange = false;
		for (int i = 0; i < j; i++)
		{
			if (a[i] > a[i + 1])
			{
				Swap(&a[i], &a[i + 1]);
				exchange = true;
			}
		}
		if (exchange == false)
		{
			break;
		}
	}
}

int main()
{
	int arr[] = { 9,6,7,6,5,4,3,6,1,0 };
	//int arr[] = { 9,8,7,6,5,4,3,2,1,0 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	//SelectSort(arr, sz);
	BubbleSort(arr, sz);
	PrintArray(arr, sz);
	return 0;
}